/**
 * 金额格式化
 * @param {number} value 金额
 * @param {number} decimals 小数位数
 * @returns {string}
 */
export function currency(value, decimals = 2) {
  if (!value) return '0.00'
  value = Number(value)
  return '¥' + value.toFixed(decimals).replace(/\d(?=(\d{3})+\.)/g, '$&,')
}

/**
 * 日期格式化
 * @param {string} value 日期
 * @param {string} fmt 格式
 * @returns {string}
 */
export function formatDate(value, fmt = 'YYYY-MM-DD HH:mm:ss') {
  if (!value) return ''
  const date = new Date(value)
  const o = {
    'M+': date.getMonth() + 1,
    'D+': date.getDate(),
    'H+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds(),
    'q+': Math.floor((date.getMonth() + 3) / 3),
    'S': date.getMilliseconds()
  }
  if (/(Y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  }
  for (let k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
    }
  }
  return fmt
}

/**
 * 数字千分位格式化
 * @param {number} value 数字
 * @returns {string}
 */
export function numberFormat(value) {
  if (!value) return '0'
  return value.toString().replace(/\d+/, function(n) {
    return n.replace(/(\d)(?=(\d{3})+$)/g, '$1,')
  })
}

/**
 * 文件大小格式化
 * @param {number} value 字节大小
 * @returns {string}
 */
export function fileSize(value) {
  if (!value) return '0 Bytes'
  const units = ['Bytes', 'KB', 'MB', 'GB', 'TB']
  let index = 0
  while (value >= 1024 && index < units.length - 1) {
    value = value / 1024
    index++
  }
  return value.toFixed(2) + ' ' + units[index]
}

/**
 * 手机号脱敏
 * @param {string} value 手机号
 * @returns {string}
 */
export function maskPhone(value) {
  if (!value) return ''
  return value.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
}

/**
 * 身份证号脱敏
 * @param {string} value 身份证号
 * @returns {string}
 */
export function maskIdCard(value) {
  if (!value) return ''
  return value.replace(/(\d{4})\d{10}(\d{4})/, '$1**********$2')
}

/**
 * 银行卡号脱敏
 * @param {string} value 银行卡号
 * @returns {string}
 */
export function maskBankCard(value) {
  if (!value) return ''
  return value.replace(/(\d{4})\d+(\d{4})/, '$1 **** **** $2')
}

/**
 * 订单状态格式化
 * @param {number} value 状态码
 * @returns {string}
 */
export function orderStatus(value) {
  const statusMap = {
    0: '待付款',
    1: '待发货',
    2: '已发货',
    3: '已完成',
    4: '已取消',
    5: '已退款'
  }
  return statusMap[value] || '未知状态'
}

/**
 * 支付方式格式化
 * @param {number} value 支付方式代码
 * @returns {string}
 */
export function paymentMethod(value) {
  const methodMap = {
    1: '微信支付',
    2: '支付宝',
    3: '银行卡',
    4: '余额支付'
  }
  return methodMap[value] || '其他方式'
} 